package com.taotao.service.serviceImpl;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.taotao.common.bean.EUTreeNode;
import com.taotao.common.bean.TaotaoResult;
import com.taotao.mapper.TbContentCategoryMapper;
import com.taotao.pojo.TbContentCategory;
import com.taotao.pojo.TbContentCategoryExample;
import com.taotao.pojo.TbContentCategoryExample.Criteria;
import com.taotao.service.ContentCategoryService;

@Service
public class ContentCategoryServiceImpl implements ContentCategoryService {

	@Autowired
	private TbContentCategoryMapper contentCategoryMapper;

	/**
	 * 内容分类管理列表
	 */
	public List<EUTreeNode> getContentCatList(long parentId) {
		// 根据parentId 查询分类列表
		TbContentCategoryExample example = new TbContentCategoryExample();
		Criteria criteria = example.createCriteria();
		criteria.andParentIdEqualTo(parentId);
		List<TbContentCategory> list = contentCategoryMapper.selectByExample(example);

		List<EUTreeNode> resultList = new ArrayList<>();
		for (TbContentCategory tbContentCategory : list) {
			EUTreeNode node = new EUTreeNode();
			node.setId(tbContentCategory.getId());
			node.setText(tbContentCategory.getName());
			// 判断是否为父节点
			if (tbContentCategory.getIsParent()) {
				node.setState("closed");
			} else {
				node.setState("open");
			}
			resultList.add(node);
		}
		return resultList;
	}

	/**
	 * 新建内容分类
	 */
	public TaotaoResult createContentCate(long parentId, String name) {
		// 创建pojo对象
		TbContentCategory contentCategory = new TbContentCategory();
		contentCategory.setName(name);
		// 是否为父节点
		contentCategory.setIsParent(false);
		// 1 -- 正常；2 -- 删除
		contentCategory.setStatus(1);
		contentCategory.setSortOrder(1);
		contentCategory.setParentId(parentId);
		contentCategory.setCreated(new Date());
		contentCategory.setUpdated(new Date());

		// 添加记录
		contentCategoryMapper.insert(contentCategory);
		// 查看父节点的isParentId是否为true,如果不是，改为true
		TbContentCategory parentCat = contentCategoryMapper.selectByPrimaryKey(parentId);
		if (! parentCat.getIsParent()) {
			parentCat.setIsParent(true);
			// 更新父节点
			contentCategoryMapper.updateByPrimaryKey(parentCat);
		}
		return TaotaoResult.ok(contentCategory);
	}

	/**
	 * 重命名内容分类
	 */
	public TaotaoResult updateContentCate(long id, String name) {
		// 创建pojo对象
		TbContentCategory contentCategory = new TbContentCategory();
		// 创建更新 条件
		TbContentCategoryExample example = new TbContentCategoryExample();
		Criteria criteria = example.createCriteria();
		criteria.andIdEqualTo(id);
		contentCategory.setId(id);
		contentCategory.setName(name);
		contentCategoryMapper.updateByExampleSelective(contentCategory, example);
		return TaotaoResult.ok();
	}

	/**
	 * 删除内容分类
	 */
	public TaotaoResult deleteContentCate(long id) {

		// 创建删除条件
		TbContentCategoryExample example = new TbContentCategoryExample();
		long parentId = contentCategoryMapper.selectByPrimaryKey(id).getParentId();
		Criteria criteria = example.createCriteria();
		criteria.andParentIdEqualTo(parentId);
		contentCategoryMapper.deleteByPrimaryKey(id);

		int count = contentCategoryMapper.countByExample(example);
		if (count == 0) {
			// 创建pojo对象
			TbContentCategory contentCategory = new TbContentCategory();
			TbContentCategoryExample example1 = new TbContentCategoryExample();
			Criteria criteria1 = example.createCriteria();
			criteria1.andIdEqualTo(parentId);
			contentCategory.setId(parentId);
			contentCategory.setIsParent(false);
			contentCategoryMapper.updateByExampleSelective(contentCategory, example1);

		}

		return TaotaoResult.ok();
	}

}
